Meteor-এ Custom Validation Rules এবং Error Handling একটি গুরুত্বপূর্ণ অংশ, বিশেষত যখন আপনি ব্যবহারকারীর ইনপুট যাচাই করতে চান বা কোনো ধরনের ত্রুটি (error) সঠিকভাবে পরিচালনা করতে চান। Meteor আপনাকে form validation, custom validation rules এবং error handling পরিচালনা করার জন্য শক্তিশালী টুলস সরবরাহ করে।
Custom Validation Rules
Custom validation rules তৈরি করার জন্য, আপনি সাধারণত SimpleSchema বা aldeed:simple-schema প্যাকেজ ব্যবহার করবেন, যা ইনপুট যাচাইয়ের জন্য খুবই জনপ্রিয় এবং সহজ। এই প্যাকেজটি আপনার ডেটাবেসের জন্য স্কিমা এবং ইনপুট যাচাই করার জন্য কাস্টম রুল তৈরি করতে সহায়ক।
১. SimpleSchema প্যাকেজ ইনস্টল করা
meteor add aldeed:simple-schema
২. SimpleSchema এর মাধ্যমে Custom Validation Rule তৈরি করা
// /imports/api/tasks.js
import SimpleSchema from 'simpl-schema';
// Custom validation rule
const MyCustomSchema = new SimpleSchema({
name: {
type: String,
label: "Task Name",
min: 3, // Name must be at least 3 characters long
custom() {
if (this.value === "invalid") {
return "nameInvalid"; // Custom error message if value is "invalid"
}
},
},
dueDate: {
type: Date,
label: "Due Date",
custom() {
if (this.value && this.value < new Date()) {
return "dueDateInPast"; // Custom error for past dates
}
},
},
});
export { MyCustomSchema };
Custom Validation Rules:
nameInvalid: এটি একটি কাস্টম ত্রুটি বার্তা যেটি যদিnameফিল্ডে "invalid" প্রদান করা হয়।dueDateInPast: এটি একটি কাস্টম ত্রুটি বার্তা যেটি ত্রুটিপূর্ণ due date চেক করে, যদি তা বর্তমান দিনের আগের তারিখ হয়।
৩. Custom Error Handling:
একটি Meteor method বা publication এ যখন কোনো ত্রুটি ঘটে, তখন আপনি throw new Meteor.Error ব্যবহার করতে পারেন, যা কাস্টম ত্রুটি এবং ত্রুটির বার্তা তৈরি করতে সহায়ক।
// /server/methods.js
import { Meteor } from 'meteor/meteor';
import { MyCustomSchema } from '/imports/api/tasks.js';
Meteor.methods({
'tasks.insert'(task) {
// Validate task data using the schema
const taskValidation = MyCustomSchema.newContext();
taskValidation.validate(task);
if (!taskValidation.isValid()) {
// Throwing a custom error if validation fails
throw new Meteor.Error('validation-error', 'Invalid task data');
}
// Insert data into the database
// If validation passes, task is inserted
// Tasks.insert(task);
},
});
এখানে, আমরা validation error চেক করছি এবং যদি validation fail করে, তবে Meteor.Error এর মাধ্যমে একটি কাস্টম ত্রুটি তৈরি করা হচ্ছে।
Error Handling in Client-Side
Client-side এ error handling করার জন্য, Meteor আপনাকে Meteor.call() বা Meteor.subscribe() এর মাধ্যমে ত্রুটি ক্যাচ করতে দেয়। আপনি try-catch ব্লক ব্যবহার করে এই ত্রুটিগুলি ধরতে এবং ব্যবহারকারীকে সঠিক বার্তা প্রদর্শন করতে পারেন।
// /client/main.js
Meteor.call('tasks.insert', taskData, (error, result) => {
if (error) {
console.error("Error occurred: ", error.reason);
// Display error message to the user
alert("Error: " + error.reason);
} else {
// Proceed with the result
console.log("Task inserted successfully: ", result);
}
});
Error Handling:
- error.reason: ত্রুটির মূল কারণ ব্যাখ্যা করে।
- alert(): ক্লায়েন্টে ব্যবহারকারীকে ত্রুটি বার্তা দেখানোর জন্য।
Error Messages with SimpleSchema
SimpleSchema ব্যবহার করলে আপনি কাস্টম ত্রুটির বার্তা সহ validation errors ক্যাচ করতে পারেন। আপনি আপনার স্কিমা তৈরি করার সময় custom এবং error messages নির্ধারণ করতে পারেন।
// /imports/api/tasks.js
import SimpleSchema from 'simpl-schema';
const TaskSchema = new SimpleSchema({
name: {
type: String,
label: "Task Name",
min: 3,
custom() {
if (this.value === "invalid") {
return "Name cannot be 'invalid'"; // Custom error message
}
},
},
dueDate: {
type: Date,
label: "Due Date",
custom() {
if (this.value && this.value < new Date()) {
return "Due date cannot be in the past"; // Custom error message
}
},
},
});
const Task = new Mongo.Collection('tasks');
Task.attachSchema(TaskSchema);
এখানে, custom ফাংশনের মধ্যে কাস্টম ত্রুটি বার্তা প্রদান করা হয়েছে। যখন কোনো ইউজার name ফিল্ডে "invalid" প্রদান করবে অথবা dueDate ফিল্ডে পুরোনো তারিখ দিবে, তখন তা কাস্টম ত্রুটি বার্তা দেখাবে।
Displaying Errors in UI
কাস্টম ত্রুটি বার্তা UI তে প্রদর্শন করতে, আপনি AutoForm প্যাকেজ ব্যবহার করতে পারেন। AutoForm একটি জনপ্রিয় প্যাকেজ যা ফর্মের জন্য কাস্টম validation এবং error messages পরিচালনা করতে সহায়ক।
meteor add aldeed:autoform
// /client/main.html
<template name="taskForm">
{{> afQuickField name="name"}}
{{> afQuickField name="dueDate"}}
{{> afFormGroup}}
</template>
// /client/main.js
import { Template } from 'meteor/templating';
import { Tasks } from '/imports/api/tasks.js';
Template.taskForm.helpers({
tasks() {
return Tasks.find();
},
});
Template.taskForm.events({
'submit form'(event) {
event.preventDefault();
// Validate the task form
const taskData = {
name: event.target.name.value,
dueDate: new Date(event.target.dueDate.value),
};
Meteor.call('tasks.insert', taskData, (error) => {
if (error) {
alert("Error: " + error.reason);
}
});
},
});
Error Display:
- AutoForm ব্যবহার করে আপনি UI-তে ডাইনামিকভাবে validation error এবং কাস্টম বার্তা দেখাতে পারেন।
সারাংশ
Meteor-এ Custom Validation Rules এবং Error Handling গুরুত্বপূর্ণ অংশ হতে পারে, যা আপনার অ্যাপ্লিকেশনকে আরও নির্ভুল এবং ইউজার-ফ্রেন্ডলি করে তোলে। SimpleSchema ব্যবহার করে আপনি কাস্টম ভ্যালিডেশন রুল তৈরি করতে পারেন, এবং Meteor.Error ব্যবহার করে কাস্টম ত্রুটি বার্তা তৈরি করতে পারেন। UI-তে ত্রুটি প্রদর্শন করার জন্য, AutoForm ব্যবহার করলে এটি আরও সহজ এবং গতিশীল হয়।
Read more